Providing content to a user across multiple devices

ABSTRACT

Methods, systems, and apparatus, including computer programs encoded on a computer-readable storage medium, and including a method for providing content. The method comprises receiving a first login request from a first device used by a user, the request being associated with a first anonymous identifier associated with the first device, and determining a user tag for the user, that does not include any personally identifiable information associated with the user. The method further comprises receiving a second login request from a second different device used by the user, the request being associated with a second different anonymous identifier associated with the second different device, and storing an association between the user tag, the first anonymous identifier and the second different anonymous identifier. The method further comprises receiving a request for content from either the first or second different device and providing content in response to the request using the association.

CROSS-REFERENCE TO RELATED PATENT APPLICATION

This application is a reissue continuation application of U.S. patentapplication Ser. No. 15/488,386, which is an application for reissue ofU.S. Pat. No. 9,009,258, (previously U.S. patent application Ser. No.13/413,459), titled “PROVIDING CONTENT TO A USER ACROSS MULTIPLEDEVICES” and issued on Apr. 14, 2015. Both U.S. Pat. No. 9,009,258 andU.S. patent application Ser. No. 15/488,386 are incorporated herein byreference in their entirety. More than one reissue application has beenfiled for the reissue of U.S. Pat. No. 9,009,258. The reissueapplications with application Ser. Nos. 15/488,386 and 15/488,366,respectively, and the current application are reissues applications ofU.S. Pat. No. 9,009,258.

BACKGROUND

This specification relates to information presentation.

The Internet provides access to a wide variety of resources. Forexample, video and/or audio files, as well as web pages for particularsubjects or particular news articles, are accessible over the Internet.Access to these resources presents opportunities for other content(e.g., advertisements) to be provided with the resources. For example, aweb page can include slots in which content can be presented. Theseslots can be defined in the web page or defined for presentation with aweb page, for example, along with search results.

Content item slots can be allocated to content sponsors as part of areservation system, or in an auction. For example, content sponsors canprovide bids specifying amounts that the sponsors are respectivelywilling to pay for presentation of their content. In turn, an auctioncan be run, and the slots can be allocated to sponsors according, amongother things, to their bids and/or the relevance of the sponsoredcontent to content presented on a page hosting the slot or a requestthat is received for the sponsored content. The content can then beprovided to the user on any devices associated with the user such as ahome personal computer (PC), a smartphone, a laptop computer, or someother user device.

SUMMARY

In general, one innovative aspect of the subject matter described inthis specification can be implemented in methods that include a methodfor providing content. The method comprises receiving a first loginrequest from a first device used by a user for logging into a service,the first login request being associated with a first anonymousidentifier associated with the first device. The method furthercomprises determining, using one or more processors, a user tag for theuser, wherein the user tag does not include any personally identifiableinformation associated with the user. The method further comprisesreceiving a second login request from a second different device used bythe user, the second login request being associated with a seconddifferent anonymous identifier associated with the second differentdevice. The method further comprises storing an association between theuser tag, the first anonymous identifier and the second differentanonymous identifier. The method further comprises receiving a requestfor content from either the first device including the first anonymousidentifier or the second different device including the second differentanonymous identifier. The method further comprises providing, using theone or more processors, content in response to the request using theassociation.

These and other implementations can each optionally include one or moreof the following features. The first and second different anonymousidentifiers can be associated with different browsers. Receiving thelogin request can include receiving a request to log into a socialservice. Determining a user tag for the user further can includedetermining a random or pseudo-random number based at least in part onthe information and providing the random or pseudo-random number as theuser tag. Determining a user tag for the user can further includeapplying a one-way function to at least a portion of the informationproducing a result and using the result as the user tag. The one-wayfunction can be a hash function. The portion of information can be alogin identifier associated with the user. The portion of informationcan be an email address of the user. Storing the association can includestoring the user tag, the first anonymous identifier, and the seconddifferent anonymous identifier as an entry in a table. Storing theassociation can include mapping the user tag to both the first and thesecond different anonymous identifiers. Storing the association caninclude removing the user tag after expiration of a first time period.Storing the association can include removing the second differentanonymous identifier after expiration of a second time period. The firstand the second time periods can be the same. The first and the secondtime periods can expire at logout by the user from the service. Thefirst and the second time periods can expire after an amount of time haspassed since login that would enable a user to have logged in frommultiple different devices. The first and second different anonymousidentifiers can be selected from the group comprising a browser cookieand a device identifier. The method can further comprise: receiving alogin request from a third device used by the user, the login requestbeing associated with a third different anonymous identifier associatedwith the third device; storing an association between the user tag, thefirst anonymous identifier, the second different anonymous identifierand the third different anonymous identifier; receiving a request forcontent from either the first device including the first anonymousidentifier, the second different device including the second differentanonymous identifier, or the third different device including the thirddifferent anonymous identifier; and providing content in response to therequest and using the association. Receiving a request for content caninclude receiving a request for advertising content. Receiving a requestfor content can include receiving a request from the first deviceincluding the first anonymous identifier, where the first anonymousidentifier is a cookie. Providing content in response to the request canfurther include using information about the user to provide content tothe user.

In general, another innovative aspect of the subject matter described inthis specification can be implemented in methods that include anothermethod for providing content. The method comprises linking, using one ormore processors, multiple anonymous identifiers associated with a usertag by a service. The method further comprises receiving, at theservice, requests for content attributable to the user tag, wherein eachrequest includes one of the anonymous identifiers. The method furthercomprises providing, using the one or more processors, contentresponsive to the received requests and based on the linking.

These and other implementations can each optionally include one or moreof the following features. Linking multiple anonymous identifiers caninclude receiving a login request from the user from plural differentdevices, determining the user tag, wherein the user tag does not includeany personally identifiable information associated with a user, andmapping the user tag to an anonymous identifier associated with eachlogin request. The multiple anonymous identifiers can be selected fromthe group comprising browser cookies and device identifiers. Determininga user tag can include applying a one-way function to unique informationassociated with the user and using a result as the user tag.

In general, another innovative aspect of the subject matter described inthis specification can be implemented in methods that include anothermethod for providing content. The method comprises receiving a firstlogin request from a first device used by a user, the first loginrequest being associated with a first anonymous identifier. The methodfurther comprises determining, using one or more processors, a user tagfor the user and providing the user tag to the first device, wherein theuser tag does not include any personally identifiable informationassociated with the user. The method further comprises receiving asecond login request from a second different device used by the user,the second login request being associated with a second differentanonymous identifier. The method further comprises determining that theuser has logged into the second different device. The method furthercomprises storing an association between the user tag, the firstanonymous identifier and the second different anonymous identifier. Themethod further comprises receiving a request for content from either thefirst device using the first anonymous identifier or the seconddifferent device using the second different anonymous identifier. Themethod further comprises providing, using the one or more processors,content in response to the request for content using either the firstanonymous identifier or the second different anonymous identifier andbased on the association.

In general, another innovative aspect of the subject matter described inthis specification can be implemented in methods that include anothermethod for providing content. The method comprises receiving a requestto log into a service, the request from a user executing a first clientprocess on a client device. The method further comprises, responsive tothe request and using one or more processors, returning a clientidentifier to the client device for storage on the client device, theclient identifier identifying the user to the service for this session.The method further comprises, after logging in, receiving one or morerequests for content from the client device, where each request includesthe client identifier and a cookie associated with a given session ordevice. The method further comprises mapping the client identifier tothe cookie and storing the mapping. The method further comprises, at asubsequent time, receiving a subsequent request to log into the service,the subsequent request being from the user and associated with a secondclient process on either a different client device or through adifferent browser executed on the client device. The method furthercomprises responsive to the subsequent request, returning the clientidentifier to the client device for storage on the client device, theclient identifier identifying the user to the service for thissubsequent session. The method further comprises receiving one or moresubsequent requests for content from the user, where each subsequentrequest includes the client identifier and a second different cookieassociated with the subsequent session or device. The method furthercomprises mapping, using the one or more processors, the clientidentifier to the second different cookie and storing the mapping. Themethod further comprises using the mapping to deliver content to theuser.

These and other implementations can each optionally include one or moreof the following features. The client identifier can be a cookie. Theclient identifier has no personally identifiable information associatedwith the user. The mapping can include providing content to the userbased on the mapping. Using the mapping can include using the mappingfor conversion tracking, frequency capping, demographic and interestcategory inferences, or remarketing.

In general, another innovative aspect of the subject matter described inthis specification can be implemented in systems that include a systemfor providing content. The system includes a user login service forproviding access to a user's online resources, determining a user tagfor the user that does not include personally identifiable informationassociated with the user, and mapping the user tag to anonymousidentifiers associated with multiple devices used by the user. Thesystem further includes a content management system for providingcontent in response to requests for content by the user from any of themultiple devices associated with the user and based on the mapping.

These and other implementations can each optionally include one or moreof the following features. The user's online resources can be selectedfrom a group comprising Web services, e-mail, social networks orbusiness applications. The content can be an advertisement.

In general, another innovative aspect of the subject matter described inthis specification can be implemented in computer program products thatinclude a computer program product tangibly embodied in acomputer-readable storage device and comprising instructions. Theinstructions, when executed by a processor, cause the processor to:receive a first login request from a first device used by a user forlogging into a service, the first login request being associated with afirst anonymous identifier associated with the first device; determine auser tag for the user, wherein the user tag does not include anypersonally identifiable information associated with the user; receive asecond login request from a second different device used by the user,the second login request being associated with a second differentanonymous identifier associated with the second different device; storean association between the user tag, the first anonymous identifier andthe second different anonymous identifier; receive a request for contentfrom either: the first device including the first anonymous identifier;or the second different device including the second different anonymousidentifier; and provide content in response to the request using theassociation.

In general, another innovative aspect of the subject matter described inthis specification can be implemented in computer program products thatinclude a computer program product tangibly embodied in acomputer-readable storage device and comprising instructions. Theinstructions, when executed by a processor, cause the processor to: linkmultiple anonymous identifiers associated with a user tag by a service;receive, at the service, requests for content attributable to the usertag, wherein each request includes one of the anonymous identifiers; andprovide content responsive to the received requests and based on thelinking.

In general, another innovative aspect of the subject matter described inthis specification can be implemented in computer program products thatinclude a computer program product tangibly embodied in acomputer-readable storage device and comprising instructions. Theinstructions, when executed by a processor, cause the processor to:receive a request to log into a service, the request from a userexecuting a first client process on a client device; responsive to therequest, return a client identifier to the client device for storage onthe client device, the client identifier identifying the user to theservice for this session; after logging in, receive one or more requestsfor content from the client device, where each request includes theclient identifier and a cookie associated with a given session ordevice; map the client identifier to the cookie and store the mapping;at a subsequent time, receive a subsequent request to log into theservice, the subsequent request being from the user and associated witha second client process on either a different client device or through adifferent browser executed on the client device; responsive to thesubsequent request, return the client identifier to the client devicefor storage on the client device, the client identifier identifying theuser to the service for this subsequent session; receive one or moresubsequent requests for content from the user, where each subsequentrequest includes the client identifier and a second different cookieassociated with the subsequent session or device; map the clientidentifier to the second different cookie and store the mapping; andusing the mapping to deliver content to the user.

In general, another innovative aspect of the subject matter described inthis specification can be implemented in computer program products thatinclude a computer program product tangibly embodied in acomputer-readable storage device and comprising instructions. Theinstructions, when executed by a processor, cause the processor to:receive a request to log into a service, the request from a userexecuting a first client process on a client device; responsive to therequest, return a client identifier to the client device for storage onthe client device, the client identifier identifying the user to theservice for this session; after logging in, receive one or more requestsfor content from the client device, where each request includes theclient identifier and a cookie associated with a given session ordevice; map the client identifier to the cookie and store the mapping;at a subsequent time, receive a subsequent request to log into theservice, the subsequent request being from the user and associated witha second client process on either a different client device or through adifferent browser executed on the client device; responsive to thesubsequent request, return the client identifier to the client devicefor storage on the client device, the client identifier identifying theuser to the service for this subsequent session; receive one or moresubsequent requests for content from the user, where each subsequentrequest includes the client identifier and a second different cookieassociated with the subsequent session or device; map the clientidentifier to the second different cookie and store the mapping; and usethe mapping to deliver content to the user.

Particular implementations may realize none, one or more of thefollowing advantages. For example, providing content that may be ofinterest to anonymous audiences can occur across multiple devices, e.g.,using user tags that are mapped to a user and/or the user's differentdevices and that do not include personally identifiable informationassociated with the user.

The details of one or more implementations of the subject matterdescribed in this specification are set forth in the accompanyingdrawings and the description below. Other features, aspects, andadvantages of the subject matter will become apparent from thedescription, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example environment for deliveringcontent.

FIGS. 2A and 2B collectively show an example system for providingcontent to a user who is recognized when using multiple differentdevices.

FIG. 3A is a flowchart of an example process for providing content to auser on any of multiple different devices associated with the user.

FIG. 3B is a flowchart of an example process for providing content thatmay be of interest to a user linked to multiple identifiers by aservice.

FIG. 3C is a flowchart of an example process for providing content to auser who is associated with different devices.

FIG. 3D is a flowchart of an example process for delivering content to auser who is associated with different devices.

FIG. 4 is a block diagram of an example computer system that can be usedto implement the methods, systems and processes described in thisdisclosure.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

This document describes methods, processes and systems for providingcontent to a user having or being associated with multiple devices,without storing personally identifiable information associated with theuser to facilitate content selection. For example, when a user logs ontoa user service from a first device (e.g., the user's home PC), a usertag can be determined that uses a unique identifier associated with theuser (e.g., the user's email address, phone number or other personalinformation). To determine the user tag, the unique identifier can beobfuscated, e.g., using a one-way hash function to create a random orpseudo-random number. The user tag can be mapped to the user's firstdevice. Subsequently, when the user logs into the service from a seconddifferent device, the same user tag can also be mapped to the seconddifferent device. The mapping in these examples can use anonymousidentifiers (e.g., cookies, browser cookies, device identifiers, etc.)that are associated with each device. As a result, the mapping canidentify all of the devices associated with the user without storingpersonally identifiable information (PII) associated with the user. Whencontent is subsequently provided to the user on any of the devices,information included in the mapping can be used to assist in selectingrelevant content to be provided to the user. The selection of relevantcontent can include decisions regarding how content is delivered to theuser, such as and including, limitations on when or how content isdelivered. For example, the number of impressions of an advertisementcan be limited to a fixed number of impressions per user per time periodregardless of how many devices the user uses. In some implementations,users may be provided with an opportunity to opt in/out of programs orfeatures that allow the user to be discovered across multiple devicesand/or to be provided content based on such occurrences.

In some implementations, the mapping process can be repeatedperiodically to ensure that the anonymous identifiers (e.g., cookies)are not stale. For example, cookies on a computer can expire over time,or a user can clear a cookie, resulting in setting a new cookie.Repeating the cookie-mapping process periodically can ensure that thecurrent set of cookies belonging to the user are correctly mapped. Whilereference is made to cookies, other forms of anonymous identifiers thatinclude or have been derived from the unique identifier or obfuscatedidentifier associated with a user can be used.

In some implementations, user session history information can be storedanonymously. For example, the session history information can include auser's browsing history, the times that the user has seen a particularadvertisement, and other session history information. The informationcan be stored in association with the anonymous identifiers describedherein. In some implementations, session history information associatedwith the user's session on a first device can be stored in a table thatincludes the anonymous identifier associated with the first device. Thesame table can also be used to store the same user's session historyinformation for the user's session on a second device. In someimplementations, a separate or the same table can be used to storeassociations among the anonymous identifiers. In some implementations,anonymous identifiers, the associations, and the session data all can bestored, for example, without any corresponding personally identifiableinformation for a given user.

As will be described in further detail below, subsequent to the storageof the association and session history information, a request forcontent (e.g., an advertisement) can be sent from any of the devicesassociated with that user (the request including an anonymous identifierassociated with a given device). In some implementations, the sessionhistory information stored in the tables can be used in determining, forexample, advertisements that may be of interest to the user responsiveto the received request. The determination can include inferences forthe user based on the user's stored session history information. In someimplementations, the session history information for the user can beaggregated, e.g., by joining tables using the anonymous identifiers. Forexample, a request for content can be received, and the request caninclude an anonymous identifier associated with a user's desktop device.The received anonymous identifier can be used to look up the user'sother anonymous identifiers (e.g., for mobile and other devices of theuser). The retrieved set of anonymous identifiers can be used access tosession history information in the other tables (e.g., user browsinghistory). In some implementations, all of the session historyinformation can be joined together for the respective devices producingaggregated information. In some implementations, the aggregated sessionhistory information can be provided to a content management system inorder to determine and select eligible content for delivery to the userresponsive to the received request. For example, because the sessionhistory information can include the number of times that the user hasseen a particular advertisement, the content management system can helpto avoid selecting an advertisement for the user which has already beenpresented a predetermined number of times.

In some implementations, aggregating the information can occur ondemand, e.g., in real time after a request for content occurs. Forexample, the user's session history information, stored individually byanonymous identifier in the various tables, can be joined. Aggregatingthe information in real time can solve issues, for example, related towhether the user has opted out of being provided content that may be ofinterest to the user and based on the devices used by the user. Forexample, session history information for a device for which the user hasopted out will not be aggregated with other session history information.In some implementations, the information for a user can be aggregatedand stored in advance of any requests for content. For example, all ofthe user session history information can be stored in a third table,e.g., that includes all of the user session history information acrossall of the user's devices.

FIG. 1 is a block diagram of an example environment 100 for deliveringcontent. The example environment 100 includes a content managementsystem 110 for selecting and providing content in response to requestsfor content. The example environment 100 includes a network 102, such asa local area network (LAN), a wide area network (WAN), the Internet, ora combination thereof. The network 102 connects websites 104, userdevices 106, content sponsors 108 (e.g., advertisers), publishers 109,and the content management system 110. The example environment 100 mayinclude many thousands of websites 104, user devices 106, contentsponsors 108 and publishers 109.

In some implementations, the example environment 100 further includes auser login service 120 that can provide, for any particular user, accessto the user's Web services, e-mail, social networks, businessapplications or other resources. For example, the user login service 120can receive login requests from the user, such as through a Web browseror other application running on any device associated with the user. Thelogin request can include, for example, the user's login ID (e.g., aunique identifier, an email address, a phone number, or any otheridentifier for the user that can be used for verifying the user atlogin). The user login service 120 can also maintain information relatedto the devices on which the user is currently logged on, or has beenlogged into recently. The information can include, for example, amapping of anonymous identifiers for the devices with a user tag thatdoes not contain personally identifiable information associated with theuser. In some implementations, the mapping can be stored, for each user,in a data store of anonymous identifier associations 121, or in somedata structure.

In some implementations, the anonymous identifier associations 121 orsome other data store can store session history data for each user. Forexample, the session history data can be an aggregation of theinformation derived during each of a user's sessions from respectivedevices. In some implementations, the session history data can includetimestamps that can be used, for example, to purge session history datafor a user that is older than a threshold age. In some implementations,session history data can exist for as long as the user is logged into asession on one or more devices.

A website 104 includes one or more resources 105 associated with adomain name and hosted by one or more servers. An example website is acollection of web pages formatted in hypertext markup language (HTML)that can contain text, images, multimedia content, and programmingelements, such as scripts. Each website 104 can be maintained by acontent publisher, which is an entity that controls, manages and/or ownsthe website 104.

A resource 105 can be any data that can be provided over the network102. A resource 105 can be identified by a resource address that isassociated with the resource 105. Resources include HTML pages, wordprocessing documents, portable document format (PDF) documents, images,video, and news feed sources, to name only a few. The resources caninclude content, such as words, phrases, images, video and sounds, thatmay include embedded information (such as meta-information hyperlinks)and/or embedded instructions (such as JavaScript scripts).

A user device 106 is an electronic device that is under control of auser and is capable of requesting and receiving resources over thenetwork 102. Example user devices 106 include personal computers (PCs),televisions with one or more processors embedded therein or coupledthereto, set-top boxes, mobile communication devices (e.g.,smartphones), tablet computers and other devices that can send andreceive data over the network 102. A user device 106 typically includesone or more user applications, such as a web browser, to facilitate thesending and receiving of data over the network 102.

A user device 106 can request resources 105 from a website 104. In turn,data representing the resource 105 can be provided to the user device106 for presentation by the user device 106. The data representing theresource 105 can also include data specifying a portion of the resourceor a portion of a user display, such as a presentation location of apop-up window or a slot of a third-party content site or web page, inwhich content can be presented. These specified portions of the resourceor user display are referred to as slots (e.g., ad slots).

To facilitate searching of these resources, the environment 100 caninclude a search system 112 that identifies the resources by crawlingand indexing the resources provided by the content publishers on thewebsites 104. Data about the resources can be indexed based on theresource to which the data corresponds. The indexed and, optionally,cached copies of the resources can be stored in an indexed cache 114.

User devices 106 can submit search queries 116 to the search system 112over the network 102. In response, the search system 112 accesses theindexed cache 114 to identify resources that are relevant to the searchquery 116. The search system 112 identifies the resources in the form ofsearch results 118 and returns the search results 118 to the userdevices 106 in search results pages. A search result 118 can be datagenerated by the search system 112 that identifies a resource that isresponsive to a particular search query, and includes a link to theresource. In some implementations, the search results 118 include thecontent itself, such as a map, or an answer, such as in response to aquery for a store's products, phone number, address or hours ofoperation. In some implementations, the content management system 110can generate search results 118 using information (e.g., identifiedresources) received from the search system 112. An example search result118 can include a web page title, a snippet of text or a portion of animage extracted from the web page, and the URL of the web page. Searchresults pages can also include one or more slots in which other contentitems (e.g., ads) can be presented. In some implementations, slots onsearch results pages or other web pages can include content slots forcontent items that have been provided as part of a reservation process.In a reservation process, a publisher and a content item sponsor enterinto an agreement where the publisher agrees to publish a given contentitem (or campaign) in accordance with a schedule (e.g., provide 1000impressions by date X) or other publication criteria. In someimplementations, content items that are selected to fill the requestsfor content slots can be selected based, at least in part, on prioritiesassociated with a reservation process (e.g., based on urgency to fulfilla reservation).

When a resource 105, search results 118 and/or other content arerequested by a user device 106, the content management system 110receives a request for content. The request for content can includecharacteristics of the slots that are defined for the requested resourceor search results page, and can be provided to the content managementsystem 110.

For example, a reference (e.g., URL) to the resource for which the slotis defined, a size of the slot, and/or media types that are availablefor presentation in the slot can be provided to the content managementsystem 110. Similarly, keywords associated with a requested resource(“resource keywords”) or a search query 116 for which search results arerequested can also be provided to the content management system 110 tofacilitate identification of content that is relevant to the resource orsearch query 116.

Based at least in part on data included in the request, the contentmanagement system 110 can select content that is eligible to be providedin response to the request (“eligible content items”). For example,eligible content items can include eligible ads having characteristicsmatching the characteristics of ad slots and that are identified asrelevant to specified resource keywords or search queries 116. In someimplementations, the selection of the eligible content items can furtherdepend on user signals, such as demographic signals and behavioralsignals. Other information, such as user identifier information that isassociated with the mappings described above, can be used and/orevaluated when selecting eligible content.

The content management system 110 can select from the eligible contentitems that are to be provided for presentation in slots of a resource orsearch results page based at least in part on results of an auction (orby some other selection process). For example, for the eligible contentitems, the content management system 110 can receive offers from contentsponsors 108 and allocate the slots, based at least in part on thereceived offers (e.g., based on the highest bidders at the conclusion ofthe auction or based on other criteria, such as those related tosatisfying open reservations). The offers represent the amounts that thecontent sponsors are willing to pay for presentation (or selection) oftheir content with a resource or search results page. For example, anoffer can specify an amount that a content sponsor is willing to pay foreach 1000 impressions (i.e., presentations) of the content item,referred to as a CPM bid. Alternatively, the offer can specify an amountthat the content sponsor is willing to pay (e.g., a cost per engagement)for a selection (i.e., a click-through) of the content item or aconversion following selection of the content item. For example, theselected content item can be determined based on the offers alone, orbased on the offers of each content sponsor being multiplied by one ormore factors, such as quality scores derived from content performance,landing page scores, and/or other factors.

A conversion can be said to occur when a user performs a particulartransaction or action related to a content item provided with a resourceor search results page. What constitutes a conversion may vary fromcase-to-case and can be determined in a variety of ways. For example, aconversion may occur when a user clicks on a content item (e.g., an ad),is referred to a web page, and consummates a purchase there beforeleaving that web page. A conversion can also be defined by a contentprovider to be any measurable or observable user action, such asdownloading a white paper, navigating to at least a given depth of awebsite, viewing at least a certain number of web pages, spending atleast a predetermined amount of time on a web site or web page,registering on a website, experiencing media, or performing a socialaction regarding a content item (e.g., an ad), such as republishing orsharing the content item. Other actions that constitute a conversion canalso be used.

In some implementations, the likelihood that a conversion will occur canbe improved, such as by recognizing a user when the user has accessedresources using multiple devices. For example, if it is known that acontent item (e.g., an advertisement) has already been seen by a user ona first device (e.g., the user's home PC), then a determination can bemade (e.g., using parameters) whether or not to provide the same contentitem to the same user on a different device (e.g., the user'ssmartphone). This can increase the likelihood of a conversion, forexample, by either repeating impressions of an advertisement or avoidingsubsequent impressions, depending on how multiple impressions for theadvertisement to the same user are predicted to lead to a conversion ineither case.

For situations in which the systems discussed here collect personalinformation about users, the users may be provided with an opportunityto opt in/out of programs or features that may collect personalinformation (e.g., information about a user's social network, socialactions or activities, a user's preferences or a user's currentlocation). In addition, certain data may be anonymized in one or moreways before it is stored or used, so that personally identifiableinformation associated with the user is removed. For example, a user'sidentity may be anonymized so that the no personally identifiableinformation can be determined for the user, or a user's geographiclocation may be generalized where location information is obtained (suchas to a city, ZIP code, or state level), so that a particular locationof a user cannot be determined.

FIGS. 2A and 2B collectively show an example system 200 for providingcontent to a user who uses multiple devices 106 to retrieve information.For example, the devices 106 used by a user 201 (e.g., Adam) may includea first device 106a (e.g., Adam's home PC), a second device 106b (e.g.,a mobile computing device such as Adam's smartphone), a third device106c (e.g., Adam's work laptop computer), and/or other devices 106.Content that is served, e.g., by the content management system 110, toany of the devices 106 can depend on information that associates theuser to all of the multiple devices 106.

Referring to FIG. 2A, the user 201 (e.g., Adam) can log into the userlogin service 120 from the first device 106a (e.g., Adam's home PC)using a user login identifier 204a that identifies Adam to the userlogin service 120. For example, the user login identifier 204a caninclude Adam's login ID (e.g., Adam Jones) or credentials and can beincluded in a first login request that is received by the login service120 (e.g., to log Adam into a social service). The login request can beassociated with a first anonymous identifier 206a (e.g., a cookie, abrowser cookie, a device identifier, etc.) that is associated with thefirst device 106a.

In some implementations, the user login service 120 can determine a usertag 208a for the user 201, wherein the user tag 208a does not includeany personally identifiable information associated with the user.Example personally identifiable information includes a login identifierassociated with the user, the user's email address, the user's phonenumber, and so on.

In some implementations, the user login service 120 can determine theuser tag 208a in different ways. For example, determining the user tag208a can further include determining a random or pseudo-random numberbased at least in part on the personally identifiable informationassociated with the user, and the random or pseudo-random number can beprovided as the user tag 208a. In some implementations, determining theuser tag 208a can further include applying a one-way function (e.g., ahash function) to at least a portion of the personally identifiableinformation to produce a result, and the result can be used for the usertag 208a. In some implementations, other techniques for determining theuser tag 208a can be used, and multiple techniques (e.g., includingencryption) can be used in combination.

The user 201 may log into the login service 120 from the seconddifferent device 106b (e.g., Adam's smartphone or some other device)using a user login identifier 204b that also identifies Adam. Forexample, the user login identifier 204b can be the same login identifierthat Adam used to log into the first device 106a. In someimplementations, the login to the second different device 106b (e.g.,Adam's smartphone) can occur while Adam is still logged into the firstdevice 106a (e.g., Adam's home PC). During the second login, the userlogin service 120, for example, can receive a second login request fromthe second different device 106b. The second login request can beassociated, for example, with a second anonymous identifier 206b (e.g.,a cookie, a device identifier, etc.) associated with the seconddifferent device 106b.

In some implementations, the first and second different anonymousidentifiers can be associated with different browsers. For example, thefirst device 106a and the second different device 106b can be the samedevice, but the first anonymous identifier 206a and the second anonymousidentifier 206b can each be associated with a different browser. Thiscan occur, for example, if the same user uses two different browsers.

In some implementations, the user login service 120 can store anassociation between the user tag 208a, the first anonymous identifier206a, and the second different anonymous identifier 206b in the datastore of anonymous identifier associations 121. In some implementations,associations can be stored as pairs that relate the user tags 208 toanonymous identifiers 206. In some implementations, the association thatis stored excludes the user tag, as the user tag is the same for each ofthe login sessions. For example, the association that is stored in thisexample is between two or more anonymous identifiers. For example, theuser tag 208a for Adam can be stored with a first anonymous identifier206a that corresponds to Adam's login from the first device 106a (e.g.,Adam's home PC). In another example, the same user tag 208a for Adam canbe stored with a second different anonymous identifier 206b thatcorresponds to Adam's login from the second different device 106b (e.g.,Adam's smartphone). As a result, an association is stored among a user'smultiple anonymous identifiers.

Different techniques can be used for storing the association between theuser tag 208a and the anonymous identifiers 206a and 206b. In someimplementations, storing the association can include storing theinformation as entries or rows in a table, e.g., where the user tag ismapped to both the first and the second different anonymous identifiersusing one or more entries or rows.

In some implementations, storing the association can include removingthe user tag after expiration of a first time period and/or removing thesecond different anonymous identifier after expiration of a second timeperiod. In some implementations, the first and the second time periodscan be the same. In some implementations, the first and the second timeperiods can expire at logout by the user from the service. In someimplementations, the first and the second time periods can expire afteran amount of time has passed since login that would enable a user tohave logged in from multiple different devices. Example amounts of timeinclude substantially two days, substantially three days, substantiallyfour days or substantially one week.

For example, associations that map the user tag associated with Adam toany of Adam's multiple user devices can remain stored for a few days orsome other time period in which Adam is likely to log in from multipledifferent devices. In some implementations, information related to anyof Adam's devices can be deleted upon Adam's exit from (or logging offof) the service.

Referring to FIG. 2B, the content management system 110 can receive arequest for content 212a or 212b from either the first device 106a orthe second different device 106b. For example, the request for content212a can be a request for an advertisement to fill an advertisement slot216a on a web page 218a. In another example, the request for content212b can be a request for an advertisement to fill an advertisement slot216b on a web page 218b. If the request for content 212a is from thefirst device 106a, for example, then the request for content can includethe first anonymous identifier 206a. Otherwise, if the request forcontent 212b is from the second different device 106b, for example, thenthe request for content can include the second different anonymousidentifier 206b.

Regardless of where the request for content originates, the contentmanagement system 110 can provide a content item (e.g., content items220a or 220b) in response to the request and using information that mapsthe user tag to multiple devices (e.g., from the anonymous identifierassociations 121). For example, the information can include theassociation among the user tag 208a, the first anonymous identifier 206aand the second different anonymous identifier 206b. Using thisinformation, the content management system 110 can, for example, treatthe requests for content as if they originate from the same user,regardless of the particular user device. In some implementations,identifying eligible content items for the request for content 212b, forexample, can depend on content already provided to the same user (e.g.,Adam) on the first device 106a. As a result, an advertisement forCalifornia vacations that is defined to be provided as one impressionper user can be shown on Adam's first device 106a and not repeated againon Adam's second different device 106b. In some implementations, it canbe beneficial to provide the same advertisement once and only once toeach of the user's multiple devices.

Adam's devices 106a and 106b are two examples of devices that Adam mayuse. For example, Adam may use a third different device 106c (e.g., awork laptop computer). When Adam uses the third different device 106c tolog in, for example, the user login service 120 can store a thirddifferent anonymous identifier 206c in the anonymous identifierassociations 121. As a result, all three devices 106a-106c can beassociated with the user tag 208a associated with Adam.

Similarly, other users (e.g., Betty) can use the user login service 120for logging in from multiple different devices. As a result of Bettylogging into a fourth and a fifth device, for example, the user loginservice 120 can store fourth and fifth different anonymous identifiers206d and 206e in the anonymous identifier associations 121 (thoughthose, of course, would be stored in association with Betty, not withAdam).

FIG. 3A is a flowchart of an example process 300 for providing contentto a user on any of multiple devices associated with the user. In someimplementations, the content management system 110 and/or the user loginservice 120 can perform steps of the process 300 using instructions thatare executed by one or more processors. FIGS. 1-2B are used to provideexample structures for performing the steps of the process 300.

A first login request is received from a first device used by a user forlogging into a service (302). The first login request is associated witha first anonymous identifier associated with the first device. Forexample, the user login service 120 can receive the first login requestwhen the user 201 (e.g., Adam) logs into the first device 106a. The userlogin identifier 204a and the first anonymous identifier 206a can beincluded with the login request.

A user tag is determined for the user (304). The user tag does notinclude any personally identifiable information associated with theuser. In some implementations, the user login service 120 can determinethe user tag 208a using a one-way hash of the login identifier 204a(e.g., a hash of “Adam Jones”). In some implementations, the user loginservice 120 can determine the user tag 208a as a random or pseudo-randomnumber based on the user's login identifier, e.g., using the user loginidentifier 204a as a seed. In some implementations, the user tag 208acan further be based, at least in part, on information included in thelogin request.

A second login request is received from a second different device usedby the user (306). The second login request is associated with a seconddifferent anonymous identifier associated with the second differentdevice. For example, the user login service 120 can receive the secondlogin request when the user 201 (e.g., Adam) logs into the service fromthe second different device 106b (e.g., Adam's smartphone). The userlogin identifier 204b and the second anonymous identifier 206b can beincluded with the login request.

An association is stored that is between the user tag, the firstanonymous identifier and the second different anonymous identifier(308). For example, the user login service 120 can store an associationbetween the user tag 208a, the first anonymous identifier 206a, and thesecond different anonymous identifier 206b in anonymous identifierassociations 121. In some implementations, in order to create theassociation, the same user tag can be created for the user regardless ofon which device the login request originated. For example, the user taggenerated for the second request can be the same as the user taggenerated for the first request if the user tag is generated using aone-way hash function of the user login identifier. In this way, theuser tag can be the same every time the user logs in from any device.

A request for content is received from either the first device includingthe first anonymous identifier or the second different device includingthe second different anonymous identifier (310). For example, thecontent management system 110 can receive a request for content 212a or212b from either the first device 106a or the second different device106b, respectively. The request for content 212a (or 212b) can be arequest for advertising content such as a request for an advertisementto fill the advertisement slot 216a (or 216b) on the web page 218a (or218b).

Content is provided in response to the request and using the association(312). For example, the content management system 110 can provide eitherthe content item 220a or 220b, depending on the source of the request.In some implementations, providing content in response to the requestcan further include using information about the user and providingcontent that may be of interest to the user. For example, anadvertisement for California vacations can be selected based, at leastin part, on information associated with the user. Further, the contentcan be provided to the user to either the first device or the seconddifferent device, e.g., where the request for content originated. Insome implementations, the delivery of content to the user can be basedon stored associations that do not include storing personallyidentifiable information associated with the user.

In some implementations, the system can store other informationregarding the user, such as information that can be used for selectingand providing content that may be of interest to the user. In someimplementations, the system stores a profile for the user that can beused for the purposes of, for example, content selection. The profilecan be updated based on the session date received from the first or thesecond device.

In some implementations, the process 300 can include additional steps,e.g., to process a third login request. For example, a login request canbe received (e.g., by the user login service 120) from a third device(e.g., device 106c) used by the user. The login request can beassociated with a third different anonymous identifier 206c associatedwith the third device 106c. An association can be stored that associatesthe user tag 208a, the first anonymous identifier 206a, the seconddifferent anonymous identifier 206b and the third different anonymousidentifier 206c.

A request for content can be received from either the first deviceincluding the first anonymous identifier, the second different deviceincluding the second different anonymous identifier, or the thirddifferent device including the third different anonymous identifier.Content can be provided (e.g., by the content management system 110) inresponse to the request and using the association.

FIG. 3B is a flowchart of an example process 320 for providing contentthat may be of interest to a user linked to multiple devices (e.g.,using identifiers generated by a service). In some implementations, thecontent management system 110 and/or the user login service 120 canperform steps of the process 320 using instructions that are executed byone or more processors. FIGS. 1-2B are used to provide examplestructures for performing the steps of the process 320.

Multiple anonymous identifiers associated with a user are linked by aservice (322). For example, as a result of multiple login requests bythe user 201 (e.g., Adam) on devices 106a-106c, the user login servicecan link the associated anonymous identifiers 206a-206c using the usertag 208a. For example, the user tag 208a can be a one-way hash of theuser login identifier 204a (e.g., Adam Jones).

In some implementations, linking multiple anonymous identifiers caninclude receiving a login request from the user from plural differentdevices, determining a user tag associated with the user, wherein theuser tag does not include any personally identifiable informationassociated with the user, and mapping the user tag to an anonymousidentifier associated with each login request. For example, the user 201(e.g., Adam) can log into the user login service 120 from multipledevices 106. For each login request, the user login service 120 candetermine the user tag 208a. In some implementations, determining theuser tag 208a can include applying a one-way function (e.g., that isrepeatable) to unique information associated with the user (e.g., emailaddress, phone number, etc.) and using the result (e.g., a random orpseudo-random number) as the user tag 208a. Further, the user loginservice 120 can map the user tag 208a to each of the anonymousidentifiers (e.g., anonymous identifiers 206a-206c) and store themappings in the anonymous identifier associations 121. In someimplementations, the multiple anonymous identifiers can be browsercookies, device identifiers, or some other identifiers.

Requests for content from the user are received at the service, whereineach request includes one of the anonymous identifiers (324). Forexample, the content management system 110 can receive requests forcontent 212a or 212b, e.g., to fill content item slots (e.g.,advertisement slots 216a or 216b).

Content is provided to the user responsive to the received requests(326). For example, the content management system 110 can select andprovide content items 220a or 220b in response to the requests forcontent 212a or 212b, respectively. The content management system 110can use information in the anonymous identifier associations 121. Forexample, if the content management system 110 identifies eligiblecontent items for a vacation advertising campaign that stipulates afinite number of impressions (e.g., one) for a given advertisement, thenthe California vacation advertisement that content management system 110provides to Adam on Adam's home PC may not be repeated on Adam'ssmartphone.

FIG. 3C is a flowchart of an example process 340 for providing contentto a user who is associated with different devices. In someimplementations, the content management system 110 and/or the user loginservice 120 can perform steps of the process 340 using instructions thatare executed by one or more processors. FIGS. 1-2B are used to provideexample structures for performing the steps of the process 340.

A first login request is received from a first device used by a user,the first login request being associated with a first anonymousidentifier (342). As an example, the user login service 120 can receivethe first login request when the user 201 (e.g., Adam) logs into thefirst device 106a. The user login identifier 204a and the firstanonymous identifier 206a can be included with the login request.

A user tag is determined for the user, wherein the user tag does notinclude any personally identifiable information associated with the user(344). In some implementations, the user login service 120 can determinethe user tag 208a using a one-way hash of the login identifier 204a(e.g., a hash of “Adam Jones”). In some implementations, the user loginservice 120 can determine the user tag 208a as random number, e.g.,using the user login identifier 204a as a seed. In some implementations,the user tag can further be based, at least in part, on informationincluded in the login request.

A second login request is received from a second different device usedby the user, the second login request being associated with a seconddifferent anonymous identifier (346). For example, the user loginservice 120 can receive the second login request when the user 201 logsinto the service from the second different device 106b (e.g., Adam'ssmartphone). The user login identifier 204b and the second anonymousidentifier 206b can be included with the login request.

It is determined that the user has logged into the second device (348).For example, the user login service 120 can determine, based on therequest, that the user 201 has logged into the second different device106b.

An association is stored that is between the user tag, the first deviceanonymous identifier and the second different device anonymousidentifier (350). As an example, the user login service 120 can store anassociation between the user tag 208a, the first anonymous identifier206a, and the second different anonymous identifier 206b in anonymousidentifier associations 121.

A request for content is received from either the first device using thefirst device anonymous identifier or from the second different deviceusing the second different device anonymous identifier (352). Forexample, the content management system 110 can receive a request forcontent 212a or 212b from either the first device 106a or the seconddifferent device 106b, respectively. The request for content 212a (or212b) can be, for example, a request for an advertisement to fill theadvertisement slot 216a (or 216b) on the web page 218a (or 218b).

Content is provided in response to the third request using either thefirst device anonymous identifier or the second different deviceanonymous identifier and based on the association (354). For example,the content management system 110 can provide either the content item220a or 220b, depending on the source of the request.

FIG. 3D is a flowchart of an example process 360 for delivering contentto a user who is associated with different devices. In someimplementations, the content management system 110 and the user loginservice 120 can perform steps of the process 360 using instructions thatare executed by one or more processors. FIGS. 1-2B are used to provideexample structures for performing the steps of the process 360.

A request to log into a service is received from a user executing afirst client process on a client device (362). For example, the user 201(e.g., Adam) may log into the user login service 120 (e.g., from atoolbar) to access a service (e.g., email, social networkingapplication, etc.), access to which can be controlled by the user loginservice 120. As a result, the user login service 120 can receive a loginrequest from the first device 106a (e.g., Adam's home PC), such as froma web browser or other client process that is executing on Adam's firstdevice 106a.

Responsive to the request and using one or more processors, a clientidentifier is returned to the client device for storage on the clientdevice, the client identifier identifying the user to the service forthis session (364). For example, the user login service 120 candetermine a client identifier that identifies the user (e.g., Adam) butcontains no personally identifiable information associated with theuser. In some implementations, the client identifier can be a cookie. Insome implementations, the client identifier can be determined using aone-way hash of the user login identifier (e.g., Adam Jones or his loginidentifier) that was provided by the user when logging in. In someimplementations, the client identifier can be a random number or someother identifier.

After logging in, one or more requests for content are received from theclient device, where each request includes the client identifier and acookie associated with a given session or device (366). As an example,the content management system 110 can receive a request for content 212afrom the first device 106a, e.g., a request to fill the advertisementslot 216a on the web page 218a. In some implementations, the contentmanagement system 110 can also receive a cookie associated with Adam'ssession on the first device 106a. The cookie received may be a copy of acookie stored on the first device 106a and that identifies the device.

The client identifier is mapped to the cookie, and the mapping is stored(368). For example, the user login service 120 can store a mappingbetween the client identifier and the cookie, e.g., in anonymousidentifier associations 121. In some implementations, the mapping caninclude storing information used for providing content to the user basedon mapping. For example, information stored with the mapping can be usedfor conversion tracking, frequency capping, demographic and interestcategory inferences, remarketing and/or other uses. In someimplementations, information stored with the mapping can includeinferences about a user (e.g., interests, user purchase intent or otherinformation). The inferences learned from one device can be used toselect and provide advertisements to the user when he/she is usinganother device. Other means for storing information about the user arepossible, such as of the form of a user profile.

At a subsequent time, a subsequent request is received to log into theservice, the subsequent request being from the user and associated witha second client process on either a different client device or through adifferent browser executed on the client device (370). For example, theuser login service 120 can receive a login request from the same user201 (e.g., Adam) on the second different device 106b (e.g., Adam'ssmartphone). This can occur, for example, while Adam is still loggedonto his first device 106a (e.g., Adam's home PC).

Responsive to the subsequent request, the client identifier is returnedto the client device for storage on the client device, the clientidentifier identifying the user to the service for this subsequentsession (372). For example, the same client identifier that is returnedto Adam's first device 106a can be returned to Adam's second differentdevice 106b.

One or more subsequent requests for content are received from the user,where each subsequent request includes the client identifier and asecond different cookie associated with the subsequent session or device(374). As an example, the content management system 110 can receive therequest for content 212b from the second different device 106b, e.g., arequest to fill the advertisement slot 216b on the web page 218b onAdam's smartphone. At the same time, the content management system 110can also receive the second different cookie associated with Adam'ssession on the second different device 106b.

The client identifier is mapped to the second different cookie, and themapping is stored (376). For example, the user login service 120 canstore a mapping between the client identifier and the second differentcookie, e.g., in anonymous identifier associations 121. As a result, anassociation now exists among the client identifier, the cookie (e.g.,from the first device 106a) and the second different cookie (e.g., fromthe second different device 106b).

Using the mapping, content is delivered to the user (378). For example,the content management system 110 can use the mapping to provide contentitems for a vacation advertising campaign, e.g., that stipulates afinite number of impressions (e.g., one) to any one user for a givenadvertisement. As a result, a California vacation advertisement, forexample, that the content management system 110 provides to Adam onAdam's home PC will not be repeated on Adam's smartphone.

FIG. 4 is a block diagram of computing devices 400, 450 that may be usedto implement the systems and methods described in this document, aseither a client or as a server or plurality of servers. Computing device400 is intended to represent various forms of digital computers, such aslaptops, desktops, workstations, personal digital assistants, servers,blade servers, mainframes, and other appropriate computers. Computingdevice 400 is further intended to represent any other typicallynon-mobile devices, such as televisions or other electronic devices withone or more processers embedded therein or attached thereto. Computingdevice 450 is intended to represent various forms of mobile devices,such as personal digital assistants, cellular telephones, smartphones,and other similar computing devices. The components shown here, theirconnections and relationships, and their functions, are meant to beexemplary only, and are not meant to limit implementations of theinventions described and/or claimed in this document.

Computing device 400 includes a processor 402, memory 404, a storagedevice 406, a high-speed interface 408 connecting to memory 404 andhigh-speed expansion ports 410, and a low speed interface 412 connectingto low speed bus 414 and storage device 406. Each of the components 402,404, 406, 408, 410, and 412, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 402 can process instructions for executionwithin the computing device 400, including instructions stored in thememory 404 or on the storage device 406 to display graphical informationfor a GUI on an external input/output device, such as display 416coupled to high speed interface 408. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices400 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 404 stores information within the computing device 400. Inone implementation, the memory 404 is a computer-readable medium. In oneimplementation, the memory 404 is a volatile memory unit or units. Inanother implementation, the memory 404 is a non-volatile memory unit orunits.

The storage device 406 is capable of providing mass storage for thecomputing device 400. In one implementation, the storage device 406 is acomputer-readable medium. In various different implementations, thestorage device 406 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device, a flash memory or other similarsolid state memory device, or an array of devices, including devices ina storage area network or other configurations. In one implementation, acomputer program product is tangibly embodied in an information carrier.The computer program product contains instructions that, when executed,perform one or more methods, such as those described above. Theinformation carrier is a computer- or machine-readable medium, such asthe memory 404, the storage device 406, or memory on processor 402.

The high speed controller 408 manages bandwidth-intensive operations forthe computing device 400, while the low speed controller 412 manageslower bandwidth-intensive operations. Such allocation of duties isexemplary only. In one implementation, the high-speed controller 408 iscoupled to memory 404, display 416 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 410, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 412 is coupled to storage device 406 and low-speed expansionport 414. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 400 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 420, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 424. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 422. Alternatively, components from computing device 400 may becombined with other components in a mobile device (not shown), such asdevice 450. Each of such devices may contain one or more of computingdevice 400, 450, and an entire system may be made up of multiplecomputing devices 400, 450 communicating with each other.

Computing device 450 includes a processor 452, memory 464, aninput/output device such as a display 454, a communication interface466, and a transceiver 468, among other components. The device 450 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 450, 452,464, 454, 466, and 468, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 452 can process instructions for execution within thecomputing device 450, including instructions stored in the memory 464.The processor may also include separate analog and digital processors.The processor may provide, for example, for coordination of the othercomponents of the device 450, such as control of user interfaces,applications run by device 450, and wireless communication by device450.

Processor 452 may communicate with a user through control interface 458and display interface 456 coupled to a display 454. The display 454 maybe, for example, a TFT LCD display or an OLED display, or otherappropriate display technology. The display interface 456 may compriseappropriate circuitry for driving the display 454 to present graphicaland other information to a user. The control interface 458 may receivecommands from a user and convert them for submission to the processor452. In addition, an external interface 462 may be provided incommunication with processor 452, so as to enable near areacommunication of device 450 with other devices. External interface 462may provide, for example, for wired communication (e.g., via a dockingprocedure) or for wireless communication (e.g., via Bluetooth or othersuch technologies).

The memory 464 stores information within the computing device 450. Inone implementation, the memory 464 is a computer-readable medium. In oneimplementation, the memory 464 is a volatile memory unit or units. Inanother implementation, the memory 464 is a non-volatile memory unit orunits. Expansion memory 474 may also be provided and connected to device450 through expansion interface 472, which may include, for example, asubscriber identification module (SIM) card interface. Such expansionmemory 474 may provide extra storage space for device 450, or may alsostore applications or other information for device 450. Specifically,expansion memory 474 may include instructions to carry out or supplementthe processes described above, and may include secure information also.Thus, for example, expansion memory 474 may be provide as a securitymodule for device 450, and may be programmed with instructions thatpermit secure use of device 450. In addition, secure applications may beprovided via the SIM cards, along with additional information, such asplacing identifying information on the SIM card in a non-hackablemanner.

The memory may include for example, flash memory and/or MRAM memory, asdiscussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 464, expansionmemory 474, or memory on processor 452.

Device 450 may communicate wirelessly through communication interface466, which may include digital signal processing circuitry wherenecessary. Communication interface 466 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 468. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS receiver module 470 may provide additional wireless datato device 450, which may be used as appropriate by applications runningon device 450.

Device 450 may also communicate audibly using audio codec 460, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 460 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 450. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 450.

The computing device 450 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 480. It may also be implemented as part of asmartphone 482, personal digital assistant, or other similar mobiledevice.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular implementations of particularinventions. Certain features that are described in this specification inthe context of separate implementations can also be implemented incombination in a single implementation. Conversely, various featuresthat are described in the context of a single implementation can also beimplemented in multiple implementations separately or in any suitablesubcombination. Moreover, although features may be described above asacting in certain combinations and even initially claimed as such, oneor more features from a claimed combination can in some cases be excisedfrom the combination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular implementations of the subject matter have beendescribed. Other implementations are within the scope of the followingclaims. In some cases, the actions recited in the claims can beperformed in a different order and still achieve desirable results. Inaddition, the processes depicted in the accompanying figures do notnecessarily require the particular order shown, or sequential order, toachieve desirable results. In certain implementations, multitasking andparallel processing may be advantageous.

What is claimed is:
 1. A computer-implemented method comprising:receiving a first login request from a first device used by a user forlogging into a service; after logging in the user based on the receivedfirst login request, identifying a first anonymous identifier that isassociated with the user wherein identifying includes either receivingthe first anonymous identifier during a session while the user is loggedin or locating the first anonymous identifier that is associated withthe user and was received prior to the login; determining, using one ormore processors and personal information associated with the user thatis unique to the user, a user tag for the user including constructingthe user tag by obfuscating at least a portion of the personalinformation, wherein the user tag does not include any personallyidentifiable information associated with the user; receiving a secondlogin request from a second different device used by the user; afterlogging in the user based on the received second login request,identifying a second anonymous identifier that is associated with theuser wherein identifying includes either receiving the second anonymousidentifier during a session while the user is logged in or locating thesecond anonymous identifier that is associated with the user and wasreceived prior to the login, wherein the second anonymous identifier isdifferent from the first anonymous identifier; after identifying thesecond anonymous identifier, storing an association between the usertag, the first anonymous identifier and the second different anonymousidentifier, the association anonymously linking the user with the firstdevice and the second different device; receiving a request for contentfrom either: the first device wherein the request includes the firstanonymous identifier; or the second different device wherein the requestincludes the second different anonymous identifier; using the receivedfirst anonymous identifier to locate a plurality of different devicesthat are mapped to the user including locating another of the first orsecond different device; determining, using the one or more processors,session history information associated with each the user's use of thefirst and second different device; creating, using the one or moreprocessors, aggregated session history using the determined sessionhistory information; and providing, using the one or more processors,content in response to the request using the association and theaggregated session history.
 2. The method of claim 1 wherein the firstand second different anonymous identifiers are associated with differentbrowsers.
 3. The method of claim 1 wherein receiving the login requestincludes receiving a request to log into a social service.
 4. The methodof claim 1 wherein determining a user tag for the user further includesdetermining a random or pseudo-random number based at least in part onthe personal information and providing the random or pseudo-randomnumber as the user tag.
 5. The method of claim 1 wherein determining auser tag for the user further includes applying a one-way function to atleast a portion of the personal information producing a result and usingthe result as the user tag.
 6. The method of claim 5 wherein the one-wayfunction is a hash function.
 7. The method of claim 5 wherein theportion of information is a login identifier associated with the user.8. The method of claim 5 wherein the portion of information is an emailaddress of the user.
 9. The method of claim 1 wherein storing theassociation includes storing the user tag, the first anonymousidentifier, and the second different anonymous identifier as an entry ina table.
 10. The method of claim 1 wherein storing the associationincludes mapping the user tag to both the first and the second differentanonymous identifiers.
 11. The method of claim 1 wherein storing theassociation includes removing the user tag after expiration of a firsttime period.
 12. The method of claim 11 wherein storing the associationincludes removing the second different anonymous identifier afterexpiration of a second time period.
 13. The method of claim 12 whereinthe first and the second time periods are the same.
 14. The method ofclaim 11 wherein the first and the second time periods expire at logoutby the user from the service.
 15. The method of claim 11 wherein thefirst and the second time periods expire after an amount of time haspassed since login that would enable a user to have logged in frommultiple different devices.
 16. The method of claim 1 wherein the firstand second different anonymous identifiers are selected from a groupcomprising a browser cookie and a device identifier.
 17. The method ofclaim 1 further comprising: receiving a login request from a thirddevice used by the user, the login request being associated with a thirddifferent anonymous identifier associated with the third device; storingan association between the user tag, the first anonymous identifier, thesecond different anonymous identifier and the third different anonymousidentifier; receiving a request for content from either: the firstdevice including the first anonymous identifier; the second differentdevice including the second different anonymous identifier; or the thirddifferent device including the third different anonymous identifier; andproviding content in response to the request and using the association.18. The method of claim 1 wherein receiving a request for contentincludes receiving a request for advertising content.
 19. The method ofclaim 1 wherein receiving a request for content includes receiving arequest from the first device including the first anonymous identifier,where the first anonymous identifier is a cookie.
 20. The method ofclaim 1 wherein providing content in response to the request furtherincludes using information about the user to provide content to theuser.
 21. A computer-implemented method comprising: receiving a firstlogin request from a first device used by a user; after logging in theuser based on the received first login request, identifying a firstanonymous identifier that is associated with the user whereinidentifying includes either receiving the first anonymous identifierduring a session while the user is logged in or locating the firstanonymous identifier that is associated with the user and was receivedprior to the login; determining, using one or more processors andpersonal information associated with the user that is unique to theuser, a user tag for the user, including constructing the user tag byobfuscating at least a portion of the personal information, andproviding the user tag to the first device, wherein the user tag doesnot include any personally identifiable information associated with theuser; receiving a second login request from a second different deviceused by the user; after logging in the user based on the received secondlogin request, identifying a second anonymous identifier that isassociated with the user wherein identifying includes either receivingthe second anonymous identifier during a session while the user islogged in or locating the second anonymous identifier that is associatedwith the user and was received prior to the login, wherein the secondanonymous identifier is different from the first anonymous identifier;determining that the user has logged into the second different device;after identifying the second anonymous identifier, storing anassociation between the user tag, the first anonymous identifier and thesecond different anonymous identifier, the association anonymouslylinking the user with the first device and the second different device;receiving a request for content from either: the first device whereinthe request includes the first anonymous identifier; or the seconddifferent device using wherein the request includes the second differentanonymous identifier; using the received first anonymous identifier tolocate a plurality of different devices that are mapped to the userincluding locating another of the first or second different device;determining, using the one or more processors, session historyinformation associated with each the user's use of the first and seconddifferent device; creating, using the one or more processors, aggregatedsession history using the determined session history information; andproviding, using the one or more processors, content in response to therequest for content using either the first anonymous identifier or thesecond different anonymous identifier and based on the association andthe aggregated session history.
 22. A computer program product tangiblyembodied in a computer-readable storage device and comprisinginstructions that, when executed by a processor, cause the processor to:receive a first login request from a first device used by a user forlogging into a service; after logging in the user based on the receivedfirst login request, identify a first anonymous identifier that isassociated with the user wherein identifying includes either receivingthe first anonymous identifier during a session while the user is loggedin or locating the first anonymous identifier that is associated withthe user and was received prior to the login; determine, using personalinformation associated with the user that is unique to the user, a usertag for the user including constructing the user tag by obfuscating atleast a portion of the personal information, wherein the user tag doesnot include any personally identifiable information associated with theuser; receive a second login request from a second different device usedby the user; after logging in the user based on the received secondlogin request, identify a second anonymous identifier that is associatedwith the user wherein identifying includes either receiving the secondanonymous identifier during a session while the user is logged in orlocating the second anonymous identifier that is associated with theuser and was received prior to the login, wherein the second anonymousidentifier is different from the first anonymous identifier; afteridentifying the second anonymous identifier, store an associationbetween the user tag, the first anonymous identifier and the seconddifferent anonymous identifier, the association anonymously linking theuser with the first device and the second different device; receive arequest for content from either: the first device including wherein therequest includes the first anonymous identifier; or the second differentdevice wherein the request includes the second different anonymousidentifier; use the received first anonymous identifier to locate aplurality of different devices that are mapped to the user includinglocating another of the first or second different device; determine,using the one or more processors, session history information associatedwith each the user's use of the first and second different device;create, using the one or more processors, aggregated session historyusing the determined session history information; and provide content inresponse to the request using the association and the aggregated sessionhistory.
 23. A computer-implemented method comprising: receiving, by oneor more processors, a first login request from a first device of a userto log the user into a service from the first device, the first loginrequest including a user login identifier (ID) of the user; determining,by the one or more processors and responsive to the first login request,a user tag for the user based on the user login ID, the user tagidentifying the user; receiving, by the one or more processors, a secondlogin request from a second device of the user to log the user into theservice from the second device; receiving, by the one or moreprocessors, a third login request from a third device of the user to logthe user into the service from the third device; determining, by the oneor more processors, that the user opted to be discoverable across thefirst device and the second device but not the third device in order toreceive content based on aggregating user sessions across at least thefirst device and the second device but not the third device; storing, bythe one or more processors in a data structure, an association betweenthe user tag and both (i) an identifier associated with the first deviceand (ii) an identifier associated with the second device; using, by theone or more processors, the identifier associated with the first device,received in a request for content, and the association between the usertag and both the identifier associated with the first device and theidentifier associated with the second device to identify at least thefirst device and the second device as being mapped to the user;determining, by the one or more processors, session history informationassociated with user's use of each of the first device and the seconddevice but not the third device; creating, by the one or moreprocessors, responsive to determining that the user opted to bediscoverable across the first device and the second device but not thethird device in order to receive content based on aggregating usersessions across at least the first device and the second device but notthe third device, aggregated session history using the session historyinformation associated with user's use of each of the first device andthe second device but not the third device; and providing, by the one ormore processors, content in response to the request for content usingthe association and the aggregated session history.
 24. The method ofclaim 23, wherein the user's use of the first device includes a firstbrowsing session or activity associated with a client process executingon the first device, or the user's use of the second device includes asecond browsing session or activity on the second device.
 25. The methodof claim 23, wherein the user's use of the first device includes a firstsession or activity associated with a first client process executing onthe first device, or the user's use of the second device includes asecond session or activity associated with a second client processexecuting on the second device.
 26. The method of claim 23, wherein theservice includes at least one of a web service, an email service, asocial networking service or an application installed on the firstdevice and the second device.
 27. The method of claim 23, wherein theidentifier associated with the first device includes a first cookie andthe identifier associated with the second device includes a secondcookie.
 28. The method of claim 23, wherein the identifier associatedwith the first device includes a first device identifier and theidentifier associated with the second device includes a second deviceidentifier.
 29. The method of claim 23, wherein the association betweenthe user tag and both (i) the identifier associated with the firstdevice and (ii) the identifier associated with the second deviceincludes session history data of a session across the first device andthe second device.
 30. The method of claim 29, wherein the sessionhistory data includes timestamps.
 31. The method of claim 23, furthercomprising determining the user tag using information in the first loginrequest or the second login request.
 32. The method of claim 31, furthercomprising determining the user tag by applying a hash function to theinformation in the first login request or the second login request. 33.A system comprising: at least one processor; and at least one memorystoring computer code instructions, the computer code instructions whenexecuted, cause the at least one processor to: receive a first loginrequest from a first device of a user to log the user into a servicefrom the first device, the first login request including a user loginidentifier (ID) of the user: determine, responsive to the first loginrequest, a user tag for the user based on the user login ID, the usertag identifying the user; receive a second login request from a seconddevice of the user to log the user into the service from the seconddevice; receive a third login request from a third device of the user tolog the user into the service from the third device; determine that theuser opted to be discoverable across the first device and the seconddevice but not the third device in order to receive content based onaggregating user sessions across at least the first device and thesecond device but not the third device; store, in a data structure, anassociation between the user tag and both (i) an identifier associatedwith the first device and (ii) an identifier associated with the seconddevice; use the identifier associated with the first device, received ina request for content, and the association between the user tag and boththe identifier associated with the first device and the identifierassociated with the second device to identify at least the first deviceand the second device as being mapped to the user; determine sessionhistory information associated with user's use of each of the firstdevice and the second device but not the third device; create,responsive to determining that the user opted to be discoverable acrossthe first device and the second device but not the third device in orderto receive content based on aggregating user sessions across at leastthe first device and the second device but not the third device,aggregated session history using the session history informationassociated with user's use of each of the first device and the seconddevice but not the third device; and provide content in response to therequest for content using the association and the aggregated sessionhistory.
 34. The system of claim 33, wherein the user's use of the firstdevice includes a first browsing session or activity associated with aclient process executing on the first device, or the user's use of thesecond device includes a second browsing session or activity on thesecond device.
 35. The system of claim 33, wherein the user's use of thefirst device includes a first session or activity associated with afirst client process executing on the first device, or the user's use ofthe second device includes a second session or activity associated witha second client process executing on the second device.
 36. The systemof claim 33, wherein the service includes at least one of a web service,an email service, a social networking service or an applicationinstalled on the first device and the second device.
 37. The system ofclaim 33, wherein the identifier associated with the first deviceincludes a first cookie and the identifier associated with the seconddevice includes a second cookie.
 38. The system of claim 33, wherein theidentifier associated with the first device includes a first deviceidentifier and the identifier associated with the second device includesa second device identifier.
 39. The system of claim 33, wherein theassociation between the user tag and both (i) the identifier associatedwith the first device and (ii) the identifier associated with the seconddevice includes session history data of a session across the firstdevice and the second device.
 40. The system of claim 39, wherein thesession history data includes timestamps.
 41. The system of claim 33,wherein the one or more processors are configured to determine the usertag using information in the first login request or the second loginrequest.
 42. A non-transitory computer-readable medium comprisingcomputer code instructions stored thereon, the computer codeinstructions, when executed by a processor, cause the processor to:receive a first login request from a first device of a user to log theuser into a service from the first device, the first login requestincluding a user login identifier (ID) of the user; determine,responsive to the first login request, a user tag for the user based onthe user login ID, the user tag identifying the user; receive a secondlogin request from a second device of the user to log the user into theservice from the second device; receive a third login request from athird device of the user to log the user into the service from the thirddevice; determine that the user opted to be discoverable across thefirst device and the second device but not the third device in order toreceive content based on aggregating user sessions across at least thefirst device and the second but not the third device; store, in a datastructure, an association between the user tag and both (i) anidentifier associated with the first device and (ii) an identifierassociated with the second device; use the identifier associated withthe first device, received in a request for content, and the associationbetween the user tag and both the identifier associated with the firstdevice and the identifier associated with the second device to identifyat least the first device and the second device as being mapped to theuser; determine session history information associated with user's useof each of the first device and the second device but not the thirddevice; create, responsive to determining that the user opted to bediscoverable across the first device and the second device but not thethird device in order to receive content based on aggregating usersessions across at least the first device and the second but not thethird device, aggregated session history using the session historyinformation associated with user's use of each of the first device andthe second device but not the third device; and provide content inresponse to the request for content using the association and theaggregated session history.